RedEmpresa = function(){
	var index = 0;
	return {
		selectionChange: function(records, form){
			if(records && records.length > 0){
				Asg.Form.setValues(form, records[0].data);
			}
		},
		resetFormDetails: function(form){
			form = Ext.getCmp(form);
			form.getForm().reset();
		},
		confirmProcess: function(grid, rowIndex, currentId){
			Asg.Message.confirm(Asg.constants.CONFIRM_DELETE_MESSAGE, function(btn){
				if(btn != "no") RedEmpresa.deleteDetails(grid, rowIndex, currentId);
			});
		},
		deleteDetails: function(grid, rowIndex, currentId) {
			var path = "/red/empresas/";
			switch(currentId){
				case "redEmpresaSucursales.redEmpresaSucursalId":
					path += "eliminarRedEmpresaSucursales";
					break;
				case "redEmpresasContactos.redEmpresaContactoId":
					path += "eliminarRedEmpresaContactos";
					break;
			}
			var rows = [grid.getStore().getAt(rowIndex)];
			var currentIdAsLong = rows[0].get(currentId);
			var redEmpresaFolio = Asg.Utils.getValue("redEmpresaFolio");
			Asg.Message.progress("Actualizando Informaci\u00F3n...");
			Ext.Ajax.request({
				timeout: Asg.constants.TIMEOUT_SECONDS,
				url: Asg.constants.CONTEXT_PATH + path,
				params: {redEmpresaFolio: redEmpresaFolio, currentId: currentIdAsLong},
				callback: function(options, success, response){
					Ext.Msg.hide();
					var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
					if(!success || !jsonObject || jsonObject.failure){
						Asg.Message.alertInvalid(Asg.constants.DEFAULT_ERROR_MESSAGE);
						return
					}
					if(!Ext.isEmpty(jsonObject.message)) Asg.Message.alert(jsonObject.message);
					if(jsonObject.list){
						Asg.Grid.loadData(grid.id, jsonObject.list);
					}
				}
	       });
		},
		saveDetails: function(form, grid){
			if(Ext.isEmpty(Asg.Utils.getValue("redEmpresaFolio"))) {
				Asg.Message.alertInvalid("Debe Guardar la Empresa antes de continuar");
				return;
			}
			var path = "/red/empresas/";
			var params = {};
			var redEmpresaFolio = Asg.Utils.getValue("redEmpresaFolio");
			switch(form){
				case "formSucursalesEmpresas":
					path += "guardarSucursalEmpresa";
					params["redEmpresaSucursales.redEmpresaFolio.redEmpresaFolio"] = redEmpresaFolio;
					break;
				case "formContactosEmpresas":
					path += "guardarContactoEmpresa";
					params["redEmpresasContactos.redEmpresas.redEmpresaFolio"] = redEmpresaFolio;
					break;
			}
			
			form = Ext.getCmp(form);
			Asg.Message.progress("Guardando Informaci\u00F3n...");
			form.getForm().submit({
    			url: Asg.constants.CONTEXT_PATH + path,
    			timeout: Asg.constants.TIMEOUT_SECONDS,
    			reset: true,
    			params: params,
    			success: function(form, action){
    				Asg.Message.alert(action.result.message);
					if(action.result.success){
						if(action.result.list){
							Asg.Grid.loadData(grid, action.result.list);
						}
					}
    			},
    			failure: Asg.Form.failureProcedure
   			});
		},
		navigate: function(panel, direction){
		    var layout = panel.getLayout();
		    var form = layout.getActiveItem();
		    var formId = form.getId();
		    var jsonParams = {};
		    if(formId == "formSucursalesEmpresas" || formId == "formContactosEmpresas"){
		    	/*agregado*/
		    	if (formId == "formSucursalesEmpresas" && direction == "next"){		    		
		    		var sucursales = Ext.getCmp("gridSucursalesEmpresas").getStore().data;
		    		var contadorSucursalesOficinaCentral = 0;
		    		for (var i=0; i<sucursales.items.length; i++) {
		    		    var item = sucursales.items[i];
		    		    if (item.data["redEmpresaSucursales.redEmpresaSucursalCentral"] == "1" ){
		    		    	contadorSucursalesOficinaCentral++;
		    		    }		    		    
		    		}
		    		if (contadorSucursalesOficinaCentral == 0){
		    			Asg.Message.alert("Al menos una sucursal debe ser Oficina Central");
		    			return;
		    		}else{
		    			RedEmpresa.move(layout, direction);
		    		}
		    		
		    		
		    	}
		    	RedEmpresa.move(layout, direction);
		    	return;
		    }else{
		    	var path = "/red/empresas/";
		    	var params = {};
		    	switch(formId){
		    	case "formRegistroEmpresas":
		    		path += "validarEmpresa";
		    		params["redEmpresaNit"] = Asg.Utils.getValue("redEmpresaNit");
		    		params["redEmpresaRegistro"] = Asg.Utils.getValue("redEmpresaRegistro");
		    		break;
		    	case "formDatosEmpresa":
		    		path += "guardarEmpresa";
		    		params["redEmpresas.redEmpresaFolio"] = Asg.Utils.getValue("redEmpresaFolio");
		    		params["redEmpresas.redEmpresaNit"] = Asg.Utils.getValue("redEmpresaNit");
		    		params["redEmpresas.redEmpresaRegistro"] = Asg.Utils.getValue("redEmpresaRegistro");
		    		params["redEmpresas.sgdUsuario.sgdUsuarioId"] = Asg.Utils.getValue("sgdUsuario");
		    		params["redEmpresas.ctgOficina.ctgOficinaId"] = Asg.Utils.getValue("ctgOficina");
		    		break;
		    	case "formMediosBusquedaEmpresa":
		    		path += "guardarMediosBusquedaEmpresa";
		    		params["redEmpresaFolio"] = Asg.Utils.getValue("redEmpresaFolio");
		    		break;
		    	}
		    }
	    	Asg.Message.progress("Guardando Informaci\u00F3n...");
		    form.getForm().submit({
    			url: Asg.constants.CONTEXT_PATH + path,
    			timeout: Asg.constants.TIMEOUT_SECONDS,
    			params: params,
    			success: function(form, action){
    				Asg.Message.alert(action.result.message);
					if(action.result.success){
						if(action.result.redEmpresaFolio) Asg.Utils.setValue("redEmpresaFolio", action.result.redEmpresaFolio);
						if(action.result.redEmpresaFechaRegistro) Asg.Utils.setValue("redEmpresaFechaRegistro", action.result.redEmpresaFechaRegistro);
						RedEmpresa.move(layout, direction);
					}
    			},
    			failure: Asg.Form.failureProcedure
   			});
		},
		move: function(layout, direction){
			layout[direction]();
			Ext.getCmp("btnValidate").setDisabled(!layout.getPrev());
		    Ext.getCmp("btnBack").setDisabled(!layout.getNext());
		},
		openWindow: function(redEmpresaFolio){
			Asg.Message.progress("Cargando Informaci\u00F3n...");
            Ext.Ajax.request({
            	 timeout: Asg.constants.TIMEOUT_SECONDS,
            	 url: Asg.constants.CONTEXT_PATH + "/red/empresas/findById",
                 params: {redEmpresaFolio: redEmpresaFolio},
                 callback: function(options, success, response){
                     Ext.Msg.hide();
                     var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
                     if(!success || !jsonObject || jsonObject.failure){
                         Asg.Message.alertInvalid(Asg.constants.DEFAULT_ERROR_MESSAGE);
                         return
                     }
                     RedEmpresa.registroEmpresasWindow(jsonObject);
                 }
            });
		},
		registroEmpresasWindow: function(config){
			if(!config) config = {};
			if(!config.redEmpresa) config.redEmpresa = {};
			if(!config.redEmpresaMedioBusqueda) config.redEmpresaMedioBusqueda = {};
			index = 0;
			new Ext.Window({
				id: "registroEmpresasWindow",
				layout: "fit", 
				title: Asg.constants.APPLICATION_TITLE + " .::. ASISTENTE DE EMPRESAS",
				modal: true,
				width: 750,
				height: 500,
				maximizable: true,
				resizable	: true,
	        	bodyStyle: "background: #DFE8F6",
	        	items:  new Ext.FormPanel({
	    			layout: "card",
	    			border: false,
	    			id: "asistenteEmpresas",
	    			frame: true,
	    			activeItem: RedEmpresa.index,
	    			items: [
	    			    RedEmpresasForms.seccionControlEmpresas(config),
	    			    RedEmpresasForms.seccionDatosEmpresa(config),
//	    			    RedEmpresasForms.seccionMediosBusquedaEmpresa(config),
	    			    RedEmpresasForms.seccionSucursalesEmpresa(config),
	    			    RedEmpresasForms.seccionContactosEmpresa(config)
	     		    ],
     		    bbar: [
    		            "->",
		               {
		            	   text: "Anterior",
		            	   id: "btnBack",
		            	   handler: function(btn) {
		            		  RedEmpresa.navigate(btn.up("panel"), "prev");
		                   },
		                   disabled: true
		               },"-",
		               {
		            	   text: "Siguiente",
		            	   id: "btnValidate",
		            	   handler: function(btn) {
		            		  RedEmpresa.navigate(btn.up("panel"), "next");
		                   }
		               }, "-",
		               {
		            	   text: "Cerrar",
		            	   handler: function(){
		            		   Ext.WindowMgr.get("registroEmpresasWindow").close();
	            		   }
		               }
	  	    		]
	        	})
	    	}).show();
		},
		initConfig: function(config){
			config = config || {};
			Ext.define("redEmpresasModel",{
				extend: "Ext.data.Model",
				fields:[
		        	"redempresafolio","redempresanit","redempresaestado",
		        	"redempresafecharegistro",
		        	"redempresarazonsocial","redempresanombrecomercial",
		        	"redempresatelefono1","redempresaestado"
		        ]
			});
			var redEmpresaStore = Ext.create("Ext.data.Store", {
				model: "redEmpresasModel",
				proxy: {
			        type: "ajax",
			        url: Asg.Utils.formatString("{0}/red/empresas/buscarEmpresas", Asg.constants.CONTEXT_PATH),
			        reader: {
			        	type: "json",
			        	root: "empresas"
	        		}
			    },
			    listeners: {
			    	beforeload: function(store, operation, options){
			    		if(!operation) operation = {};
			    		if(!operation.params) operation.params = {};
			    		if(Asg.Utils.getValue("opcion"))
			    			operation.params["opcion"] = Asg.Utils.getValue("opcion");
			    		if(Asg.Utils.getValue("estado"))
			    			operation.params["estado"] = Asg.Utils.getValue("estado");
			    		if(Asg.Utils.getValue("nombreComercial"))
			    			operation.params["nombreComercial"] = Asg.Utils.getValue("nombreComercial");
			    	}
			    }
			});
			return {
				items: {
					xtype: 'grid',
					id: 'gridEmpresas',
					flex: 1,
					margins: "5 5 5 5",
					store: redEmpresaStore,
					title: 'CONSULTA DE EMPRESAS',
					columns: [
				          {
					        	xtype:"actioncolumn",
					        	width: 150,
			        			items: [
		        			        {
		        			        	icon: Asg.constants.CONTEXT_PATH + "/resources/images/edit.png",
		        			        	tooltip: "EDITAR EMPRESA",
		        			        	iconCls: "action_icons", 
        	        	        	    handler: function(grid, rowIndex, colIndex) {
        	        	        		    var record = grid.getStore().getAt(rowIndex);
   	        			        			if(record != null){
   	        			        				RedEmpresa.openWindow(record.get("redempresafolio"));
   	        			        			}
        	        	        	   }
		        			        }, {
		        			        	icon: Asg.constants.CONTEXT_PATH + "/resources/images/page_pdf.png",
		        			        	tooltip: "VER FICHA",
		        			        	iconCls: "action_icons",
		        			        	handler: function(grid, rowIndex, colIndex) {
		        			        		/*var record = grid.getStore().getAt(rowIndex);
		        			        		if(record != null){
		        			        			RedEmpresaFicha(record.get("redempresafolio"));
		        			        		}*/
		        			        		
		        			        		 var rows = [grid.getStore().getAt(rowIndex)];
							        		 var folio = rows[0].get("redempresafolio");
							        		 var urlServer = "/pentaho/content/reporting/reportviewer/report.html?solution=CubosMTPS&path=%2FReportes&name=fichaempresa.prpt#Folio="+folio+"&userid=reportes&password=reportes&output-target=pageable%252Fpdf&showParameters=false&solution=CubosMTPS&path=%252FReportes&name=fichaempresa.prpt";
							        		 window.open("http://192.168.1.20:8181"+urlServer,"FichaEmpresa","resizable=yes,scrollbars=yes,status=yes");
		        			        	}
		        			        },{
		        			        	icon: Asg.constants.CONTEXT_PATH + "/resources/images/verification.png",
		        			        	tooltip: "ACTIVAR / INACTIVAR",
		        			        	iconCls: "action_icons",
		        			        	handler: function(grid, rowIndex, colIndex){
		        			        		 var record = grid.getStore().getAt(rowIndex);
		        			        		 if(record != null){
		        			        			 RedActivacionEmpresa.windowActivacionEmpresa(record.get("redempresafolio"));
		        			        		 }
		        			        	}
		        			        },{
		        			        	icon: Asg.constants.CONTEXT_PATH + "/resources/images/folder_add.png",
		        			        	tooltip: "AGREGAR OFERTA",
		        			        	iconCls: "action_icons",
		        			        	handler: function(grid, rowIndex, colIndex){
		        			        		var record = grid.getStore().getAt(rowIndex);
	   	        			        		if(record != null){	   	        			        				
	   	        			        				RedOferta.openWindowByEmpresas(record.get("redempresafolio"));
	   	        			        		}
		        			        		
		        			        	}
		        			        }/*,{
		        			        	icon: Asg.constants.CONTEXT_PATH + "/resources/images/cancel.png",
		        			        	tooltip: "ELIMINAR OFERTA",
		        			        	iconCls: "action_icons"
		        			        }*/
		        			        
	        			        ]
				          },
				          {header: "Nombre Comercial", dataIndex: "redempresanombrecomercial", width: 200},
				          {header: "Razon Social", dataIndex: "redempresarazonsocial", width: 200},
				          {header: "Ciudad", dataIndex: "ctgmunicipionombre", width: 175}
					],
					tbar: [
	        	       "->",
	        	       {
	        	    	   text: "Agregar Empresa", 
	        	    	   iconCls: Asg.constants.ADD_ICON,
	        	    	   handler: function(){
	        	    		   RedEmpresa.openWindow();
	        	    	   }
	        	       },
	        	       {
	           	        	text: "Buscar",
	           	        	iconCls: Asg.constants.BUSCAR_ICON,
	           	        	handler: function(){
	           	        		Asg.Acciones.buscarEmpresas();
	           	        	}
	           	        }
        	       ],
        	       dockedItems: [{
		                xtype: "pagingtoolbar",
		                store: redEmpresaStore,
		                dock: "bottom",
		                displayInfo: true
		            },{
		            	xtype: "toolbar",
		            	dock: "top",
		            	items: [
	            	       "<b>EMPRESAS</b>",
	            	       {
	            	    	    xtype: "combobox",
		        	        	name: "opcion",
		        	        	id: "opcion",
		        	        	width: 205,
		        	        	labelWidth: 175,
		        	        	margins: "0 0 0 6", 
		        	        	value: 1,
								afterLabelTextTpl:  Asg.constants.REQUIRED,
								allowBlank:false,
								store: new Ext.data.SimpleStore({
									data: [[1,"Mis Empresas"],[2,"Empresas de di Oficina"],[3,"Todas"]] , 
									fields: ["id","value"]
								}),
								valueField: "id",
								displayField: "value"
	            	       },
	            	       "<b>ESTADO</b>",
	            	       {
	            	    	   	xtype: "combobox",
		        	        	name: "estado",
		        	        	id: "estado",
		        	        	width: 205,
		        	        	margins: "0 0 0 6", 
		        	        	value: "1",
								afterLabelTextTpl:  Asg.constants.REQUIRED,
								allowBlank:false,
								store: new Ext.data.SimpleStore({
									data: [["1","ACTIVAS"],["0","INACTIVAS"]] , 
									fields: ["id","value"]
								}),
								valueField: "id",
								displayField: "value"
	            	       },
	            	       "<b>NOMBRE COMERCIAL</b>",
	            	       {
	            	    	   xtype: "textfield",
	            	    	   name: "nombreComercial",
	            	    	   id: "nombreComercial",
	            	    	   margins: "0 0 0 6",
	            	    	   width: 205,
	            	    	   vtype:'letra' //25-09-2012 Agregado por Ricardo Ard�n, validacion solo letras EDC
	            	       }
		            	]
		            }]
				}
			};
		}
	};
}();